import logging
import os
import time

from common.yaml_handler import yaml_data


class LoggerHandler(logging.Logger):

    # 集成logger类
    def __init__(self, name='root', level='DEBUG', file=None, format=None):
        # 设置收集器
        super().__init__(name)
        # 设置收集日志的级别，不设定的话，默认收集warning及以上的级别的日志
        self.setLevel('DEBUG')
        # 设置日志格式
        fmt = logging.Formatter(format)

        if file:  # 如果存在文件，就设置文件处理器，日志输出到文件
            file_handler = logging.FileHandler(file, encoding='utf8')  # 设置日志处理器-输出到文件
            file_handler.setLevel('DEBUG')  # 设置日志处理器级别
            file_handler.setFormatter(fmt)  # 处理器按照指定的格式输出日志
            self.addHandler(file_handler)

        # 设置StreamHandler,输出日志到控制台
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(level)
        stream_handler.setFormatter(fmt)
        self.addHandler(stream_handler)


# if __name__ == '__main__':
# 从yaml配置文件中读取logging相关配置
path  =os.path.abspath(os.path.dirname(__file__))

logh_time= time.strftime('%Y-%m-%d', time.localtime()) # 按日统计的log
# logh_time= time.strftime('%Y-%m-%d %H-%M-%S', time.localtime()) #按照每次运行生成一个隆
# mylog_path = path[0:-6].replace('\\', '/')+'log/mylog.txt'  # 生成到指定文件中

# mylog_path = path[0:-6].replace('\\', '/')+'log/{0}.txt'.format(logh_time) # 生成的log文件格式为txt
mylog_path = path[0:-6].replace('\\', '/')+'log/{0}.log'.format(logh_time) # 生成的log文件格式为log 推荐使用

logger = LoggerHandler(name=yaml_data['logger']['name'],
                       level=yaml_data['logger']['level'],
                       format=yaml_data['logger']['format'],
                       file=mylog_path
                       )
